package com.ldq.imooc.basics.multiThread;

/**
 * @Author : 李道泉
 * @Description :
 * @Date : 2018/4/23 20:59
 * @Modified by :
 */
public class ArmyRunnable implements Runnable {

    //保证线程可以正确的读取其它线程写入的值
    //可见性 ref JMM happens-before原则
    volatile boolean keepRun = true;

    @Override
    public void run() {

        while (keepRun) {

            if (Thread.currentThread().getName().equals("李云龙独立团")) {
                System.out.println(Thread.currentThread().getName() + "：二营长，你他娘的意大利炮呢？给老子拉上来！");
            } else {
                System.out.println(Thread.currentThread().getName() + "：报告指挥官阁下，我们弹药不多了");
            }
            //5连发炮弹
            for (int i = 0; i < 5; i++) {

                if (Thread.currentThread().getName().equals("李云龙独立团")) {
                    System.out.println(Thread.currentThread().getName() + "：进攻对方：开炮！开炮！开炮！[" + i + "]");
                } else {
                    System.out.println(Thread.currentThread().getName() + "：报告指挥官阁下，我军严重伤亡！[" + i + "]");
                }
                //让出处理器时间
                Thread.yield();
            }
        }

        if (Thread.currentThread().getName().equals("李云龙独立团")) {
            System.out.println(Thread.currentThread().getName() + "：停止射击！！！");
        } else {
            System.out.println(Thread.currentThread().getName() + "：补充弹药，求援，准备切腹！！！");
        }

    }
}
